// test_aliyun_embeddings_final.js - 测试完整的阿里云百炼平台嵌入服务
const dotenv = require('dotenv');
const path = require('path');

// 加载环境变量
dotenv.config({ path: path.resolve(__dirname, '.env') });

console.log("开始测试阿里云百炼平台嵌入服务...");

async function testAliyunEmbeddings() {
    try {
        // 检查环境变量
        if (!process.env.ALIYUN_BAILIAN_API_KEY) {
            console.log("警告: 未设置 ALIYUN_BAILIAN_API_KEY 环境变量");
            console.log("请在 .env 文件中设置您的阿里云API密钥");
            return;
        }
        
        // 导入阿里云嵌入服务
        const { AliyunEmbeddings } = require('./services/aliyunEmbeddings');
        const embeddings = new AliyunEmbeddings();
        console.log("✓ 阿里云百炼平台嵌入服务初始化成功");
        
        // 测试单个文本嵌入
        console.log("测试单个文本嵌入...");
        const testText = "子龙";
        const embedding = await embeddings.embedQuery(testText);
        console.log(`✓ 文本 '${testText}' 的嵌入向量生成成功`);
        console.log(`  向量维度: ${embedding.length}`);
        console.log(`  向量前5个值: [${embedding.slice(0, 5).join(', ')}]`);
        
        // 测试相同文本的一致性
        console.log("测试相同文本的一致性...");
        const embedding2 = await embeddings.embedQuery(testText);
        const isConsistent = JSON.stringify(embedding.slice(0, 10)) === JSON.stringify(embedding2.slice(0, 10));
        console.log(`  相同文本生成相同向量: ${isConsistent ? '✓' : '✗'}`);
        
        // 测试多个文本嵌入
        console.log("测试多个文本嵌入...");
        const texts = ["赵云", "子龙", "常山赵子龙"];
        const embeddingsArray = await embeddings.embedDocuments(texts);
        console.log(`✓ ${texts.length} 个文本的嵌入向量生成成功`);
        
        // 验证每个向量的维度
        for (let i = 0; i < embeddingsArray.length; i++) {
            console.log(`  文本 '${texts[i]}' 向量维度: ${embeddingsArray[i].length}`);
        }
        
        console.log("✓ 阿里云百炼平台嵌入服务测试完成");
        
    } catch (error) {
        console.error("✗ 阿里云百炼平台嵌入服务测试失败:", error.message);
        console.error("错误堆栈:", error.stack);
    }
}

// 运行测试
testAliyunEmbeddings();